package com.nanbei.queue;

/**
 * @ClassDescription: 阻塞队列接口
 * @JdkVersion: 17
 * @Author: BaoShan.li
 * @Created: 2023/11/29 16:55
 */
public interface BlockingQueueInterface<E>{

    /**
     * 向队列尾插入值
     * @param e 待插入值
     * @throws InterruptedException 中断异常
     */
    public void offer(E e) throws InterruptedException;

    /**
     * 向队列尾插入值
     * @param e 待插入值
     * @param timeout 设置插入超时时间  单位ms
     * @throws InterruptedException 中断异常
     */
    public void offer(E e, long timeout) throws InterruptedException;

    /**
     * 从对列头获取值, 并移除
     * @return 如果队列非空返回对头值, 否则返回 null
     * @throws InterruptedException 中断异常
     */
    public E poll() throws InterruptedException;

    /**
     * 检查队列是否为空
     * @return 空返回 true, 否则返回 false
     */
    public boolean isEmpty();

    /**
     * 检查队列是否已满
     * @return 满返回 true, 否则返回 false
     */
    public boolean isFull();

}
